5 kyu
以大寫英文為分組,轉為全小寫,並且用 _ 分隔;也就是蛇行命名法。
以正則捕獲,捕獲目標:MoviesAndBooks => Movies, And, Books。
再對字串按需求處理即可。
function toUnderscore(string) {
return String(string).replace(/([A-Z][a-z0-9]+)/g,(match,p1,index)=>{
if(index === 0) return match.toLowerCase();
return "_" + match.toLowerCase();
})
}
本次是要實現把參數從原本的駝峰式轉為蛇行式;也就是說要拆解的目標是以大寫字母為分界、後接小寫字母或數字。/([A-Z][a-z0-9]+)/g
這段正則表達式實作這段拆解。[]
包裹可能出現的類型,+
表示出現一次或多次,g
表示從頭找到尾。
最後 match 到的,如果 index 為 0 表示在字首就發現,直接返回小寫後的結果。
否則串接下劃線符號、最終拼接成一個字串。
function toUnderscore(string) {
return string.toString().split(/(?=[A-Z])/).join('_').toLowerCase();
};
最佳解的邏輯跟我的大同小異,會想放上來是因為⋯⋯
原來 split 可以帶入正則表達式!!!
第二十天!再度到達一個里程碑~